import os


class DownloadArgs:
    def __init__(self):
        self.data = list()
        self.data.append('you_get')

    # 不合并
    def no_merge(self):
        self.data.append('--no-merge')
        return self

    # 不下载字幕
    def no_caption(self):
        self.data.append('--no-caption')
        return self

    # 强制覆盖已存在文件
    def force(self):
        self.data.append('--force')
        return self

    # 跳过已存在文件的大小检查
    def skip(self):
        self.data.append('--skip-existing-file-size-check')
        return self

    # 查看版本号
    def show_version(self):
        self.data.append('-V')
        return self

    # 指定下载格式 可选不同清晰度，需要--info 先查看有那些格式
    def format(self, stream_id):
        self.data.append('--format=' + stream_id)
        return self

    # 指定文件名：不用加后缀如.mp4
    def filename(self, filename):
        self.data.append('--output-filename')
        self.data.append(filename)
        return self

    # 指定目录输出目录 例子：output_dir='D:\迅雷下载'
    def output_dir(self, output_dir):
        self.data.append('--output-dir')
        self.data.append(output_dir)
        return self

    # 指定播放器
    def player(self, player):
        self.data.append('--player')
        self.data.append(player)
        return self

    # cookies file
    def cookies_file(self, cookies_file):
        self.data.append('--cookies')
        self.data.append(cookies_file)
        return self

    # 设置连接 timeout
    def timeout(self, seconds):
        self.data.append('--timeout')
        self.data.append(seconds)
        return self

    # 开启调试
    def debug(self):
        self.data.append('--debug')
        return self

    # 获取input_file文件的所有url
    def input_file(self, input_file):
        self.data.append('--input-file')
        self.data.append(input_file)
        return self

    # Set video visit password to PASSWORD
    def password(self, password):
        self.data.append('--password')
        self.data.append(password)
        return self

    # 下载列表里的视频
    def download_list(self):
        self.data.append('--playlist')
        return self

    # 对拥有相同名字的不同文件自动重命名
    def auto_renam(self):
        self.data.append('--auto-rename')

    # 忽略ssl错误
    def ignore_ssl_errors(self):
        self.data.append('--insecure')
        return self

    # 下载使用的代理host
    # host = HOST:PORT
    def http_proxy(self, host):
        self.data.append('--http-proxy')
        self.data.append(host)
        return self

    # sock5代理
    # host = HOST:PORT or USERNAME:PASSWORD@HOST:PORT
    def sock5_proxy(self, host):
        self.data.append('--socks-proxy')
        self.data.append(host)
        return self

    # 无代理
    def no_proxy(self):
        self.data.append('--no-proxy')
        return self


class DryRunArgs:
    def __init__(self):
        self.data = list()
        self.data.append('you_get')

    # 打印提取的信息
    def info(self):
        self.data.append('--info')
        return self

    # Print extracted information with URLs
    def urls_info(self):
        self.data.append('--url')
        return self

    # 以JSON格式打印提取的URL
    def json(self):
        self.data.append('--json')
        return self

    # 代理
    # host = HOST:PORT
    def proxy(self, host):
        self.data.append('--extractor-proxy')
        self.data.append(host)
        return self


class OptionalArgs:
    def __init__(self):
        self.data = list()
        self.data.append('you_get')

    def version(self):
        self.data.append('--version')

    def help(self):
        self.data.append('--help')
